/*******************************************************************************
*
*   FILE NAME:
*       GameWindow.h - GameWindow class definition
*
*   DESCRIPTION:
*       The system window associated with a Game.
*
*******************************************************************************/
#pragma once

#include "String.h"
#include "Types.h"

class GameWindow
{
public:
    GameWindow( const String& title, uint32 width, uint32 height );
    GameWindow( const String& title, uint32 width, uint32 height, uint32 pos_x, uint32 pos_y );
    ~GameWindow( void );

    boolean Update( void );
    
    uint64 GetHandle( void );
    uint32 GetHeight( void );
    uint32 GetPositionX( void );
    uint32 GetPositionY( void );
    String GetTitle( void );
    uint32 GetWidth( void );
    boolean IsFullscreen( void );
    boolean IsVisible( void );

    void SetFullscreen( boolean fullscreen );
    void SetHeight( uint32 height );
    void SetPositionX( uint32 pos_x );
    void SetPositionY( uint32 pos_y );
    void SetTitle( const String& title );
    void SetVisible( boolean visible );
    void SetWidth( uint32 width );

protected:

private:
    boolean             mFullscreen;
    uint64              mHandle;
    uint32              mHeight;
    uint32              mPosX;
    uint32              mPosY;
    String              mTitle;
    boolean             mVisible;
    uint32              mWidth;

    GameWindow( const GameWindow& other );
    GameWindow& operator=( const GameWindow& other );
};
